add_library (spongechecks STATIC send_equivalence_checker.cc tcp_fsm_test_harness.cc byte_stream_test_harness.cc network_interface_test_harness.cc)

macro (add_test_exec exec_name)
    add_executable ("${exec_name}" "${exec_name}.cc")
    target_link_libraries ("${exec_name}" spongechecks ${ARGN})
    target_link_libraries ("${exec_name}" sponge ${ARGN})
endmacro (add_test_exec)

add_test_exec (tcp_parser ${LIBPCAP})
add_test_exec (ipv4_parser ${LIBPCAP})
add_test_exec (fsm_active_close)
add_test_exec (fsm_passive_close)
add_test_exec (fsm_ack_rst)
add_test_exec (fsm_ack_rst_relaxed)
add_test_exec (fsm_ack_rst_win)
add_test_exec (fsm_ack_rst_win_relaxed)
add_test_exec (fsm_stream_reassembler_cap)
add_test_exec (fsm_stream_reassembler_single)
add_test_exec (fsm_stream_reassembler_seq)
add_test_exec (fsm_stream_reassembler_dup)
add_test_exec (fsm_stream_reassembler_holes)
add_test_exec (fsm_stream_reassembler_many)
add_test_exec (fsm_stream_reassembler_overlapping)
add_test_exec (fsm_stream_reassembler_win)
add_test_exec (fsm_connect)
add_test_exec (fsm_connect_relaxed)
add_test_exec (fsm_listen)
add_test_exec (fsm_listen_relaxed)
add_test_exec (fsm_reorder)
add_test_exec (fsm_loopback)
add_test_exec (fsm_loopback_win)
add_test_exec (fsm_retx)
add_test_exec (fsm_retx_relaxed)
add_test_exec (fsm_retx_win)
add_test_exec (fsm_winsize)
add_test_exec (wrapping_integers_cmp)
add_test_exec (wrapping_integers_unwrap)
add_test_exec (wrapping_integers_wrap)
add_test_exec (byte_stream_construction)
add_test_exec (byte_stream_one_write)
add_test_exec (byte_stream_two_writes)
add_test_exec (byte_stream_capacity)
add_test_exec (byte_stream_many_writes)
add_test_exec (recv_connect)
add_test_exec (recv_transmit)
add_test_exec (recv_window)
add_test_exec (recv_reorder)
add_test_exec (recv_close)
add_test_exec (send_connect)
add_test_exec (send_transmit)
add_test_exec (send_retx)
add_test_exec (send_ack)
add_test_exec (send_window)
add_test_exec (send_close)
add_test_exec (net_interface)
